package day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日
 * 所在周的周三的日期。
 * 例如:
 * 出生日期:1992-07-15。
 * 20岁生日:2012-07-15
 * 当周的周三为:2012-07-18
 * @author Bonnie
 *
 */
public class Test05 {
    public static void main(String[] args) throws ParseException {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入你的身份证号：");
        String id=input.next();
        String regex="[\\d]{18}||[\\d]{17}X";//[\d]{17}[\w&&[^_]]{1}
        while (id.matches(regex)==false){
            System.out.println("输入不正确，请重新输入你的身份证号：");
            id=input.next();
        }
        int year=Integer.parseInt(id.substring(6,10));
        int month=Integer.parseInt(id.substring(10,12));
        int day=Integer.parseInt(id.substring(12,14));
        System.out.println("你的20岁生日是："+(year+20)+"年"+month+"月"+day+"日");

        StringBuilder sb_birthday=new StringBuilder();
        sb_birthday.append(year+20).append(-month).append(-day);
        String birthdayString = new String(sb_birthday);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate=sdf.parse(birthdayString);

        Calendar cal=Calendar.getInstance();
        cal.setTime(birthdayDate);
        cal.set(Calendar.DAY_OF_WEEK,4);
        System.out.println(sdf.format(cal.getTime()));



    }

}
